package basic.datastruct.队列;

import java.util.List;
import java.util.Stack;

/**
 * @创建人 MBY381
 * @创建时间 2022/4/19 20:33
 * @描述 用两个栈实现队列，栈弹出至另一个栈即可
 */
public class StackQueue {
    private Stack<Integer> stack1=new Stack<>();
    private Stack<Integer> stack2=new Stack<>();
    public StackQueue(List<Integer> li){
        for (Integer i:li
             ) {
            stack1.push(i);
        }
    }
    public Integer poll(){
        //合理的添加策略反向一次作为“队列的队首”的一部分
        if(stack2.isEmpty()){
            while(!stack1.isEmpty()){
                stack2.push(stack1.pop());
            }
        }
        if(stack2.isEmpty()){
            return null;
        }
        return stack2.pop();
    }
    public void add(Integer i){
        stack1.push(i);
    }
}
